Piętnuje
Oglądasz archiwalną wersję wątku "Piętnuje" z forum alt.pl.comp.os.hacking
Krzysztof Witkowski
No właśnie, chciałbym dowiedzieć się co dokładnie powinienem piętnować.
Sprawa wygląda tak. Na zającia na uczelni musimy przygotować w grupaach
przykładowy układzik do komunikacjia z portem równoległym. Jako, że nie mam
szczególnych zdolności pod tym względem, to lutowaniem itd zajął się
ktoś inny, ja natomiast dołączyłem do projektu, gdy weszło w gre
programowanie. Wszystko wydawało się dość trywialne, ale juz na początku

przerwania (rzecz się toczy w Dosie, a konkretnie tym dołączanym do
Win98) lpt o wyglądzie mniej więcej takim:

CONTROL=0x37A

static void interrupt lptriq() {
        static word = 0x36;
        word ^= LAMPKA;
        outport(STATUS,word); //zapalaj i gas lampke na nacisniecie guzika

        outport(0x20,0x20);     //wyslij EndOfInterrupt do 8259

}


Przerwanie przechwycone setvect i niby wszystko powinno dzialać, a
jednak...nie działa. Tzn jeśli miedzy wywołaniem przerwania z urządzenie
wywołamy jakiś printf to wszystko jest cacy i dzia. Ale jesli mamy po
prostu for(;;); to przerwanie nie reaguje, tak jakby nie zerowal ISR.
Próbowaliśmy coś wymyślić przez pare godzin, ale nic ;(
Ponieważ układ musi być skonczony na srode to wziałem go do siebie.
Podłączam, uruchamiam programik...i wszystko jest ok, tzn przerwanie
reaguje zawsze, nawet przy for(;;);
I stąd moje pytanie: co muszę piętnować? Jakaś opcja w biosie czy coś
innego, bo naprawdę nie mam pomysłów co mogło nas tak zrobić w balona.

Leszek Krupiński
begin ship log, stardate: [-29]1939.0, Krzysztof Witkowski reports:

 No właśnie, chciałbym dowiedzieć się co dokładnie powinienem piętnować.


Z piętnowaniem to na pl.pregierz.

Leafnode

Jakub Klama

like that:

No właśnie, chciałbym dowiedzieć się co dokładnie powinienem piętnować.
Sprawa wygląda tak. Na zającia na uczelni musimy przygotować w grupaach
przykładowy układzik do komunikacjia z portem równoległym. Jako, że nie mam
szczególnych zdolności pod tym względem, to lutowaniem itd zajął się
ktoś inny, ja natomiast dołączyłem do projektu, gdy weszło w gre
programowanie. Wszystko wydawało się dość trywialne, ale juz na początku

przerwania (rzecz się toczy w Dosie, a konkretnie tym dołączanym do
Win98) lpt o wyglądzie mniej więcej takim:


  ^^^^^
  i już znamy przyczynę wszystkich problemów ;))

CONTROL=0x37A

static void interrupt lptriq() {
   static word = 0x36;
   word ^= LAMPKA;
   outport(STATUS,word); //zapalaj i gas lampke na nacisniecie guzika

   outport(0x20,0x20);     //wyslij EndOfInterrupt do 8259
}

Przerwanie przechwycone setvect i niby wszystko powinno dzialać, a
jednak...nie działa. Tzn jeśli miedzy wywołaniem przerwania z urządzenie
wywołamy jakiś printf to wszystko jest cacy i dzia. Ale jesli mamy po
prostu for(;;); to przerwanie nie reaguje, tak jakby nie zerowal ISR.
Próbowaliśmy coś wymyślić przez pare godzin, ale nic ;(
Ponieważ układ musi być skonczony na srode to wziałem go do siebie.
Podłączam, uruchamiam programik...i wszystko jest ok, tzn przerwanie
reaguje zawsze, nawet przy for(;;);
I stąd moje pytanie: co muszę piętnować? Jakaś opcja w biosie czy coś
innego, bo naprawdę nie mam pomysłów co mogło nas tak zrobić w balona.


nie mam większego doświaczenia w tym temacie, strzelam w ciemno, ale
może tu jest coś takiego jak IIR (Interrupt Identification Register) w
portach szeregowych i np. standardowo zgłaszanie przerwania jest
wyłączone? Tylko nie jarze jaki związek ma z tym wszystkim printf...
Jeżeli chodzi o BIOS to "wybór" ogranicza się tylko do wyboru :) trybu
SPP/EPP/ECP, czy jakoś tak :)

gophi

może tu jest coś takiego jak IIR (Interrupt Identification Register)


Nie IIR, a IMR. W PICu. OIDP.
gophi

Przerwanie przechwycone setvect i niby wszystko powinno dzialać, a
jednak...nie działa.


char old21 = inport(0x21);
outport (0x21, old21 & ((1 << irq_num) ^ 0xFF));

Dodać po setvect, przed przywróceniem poprzedniego wektora (pobranego
getvect) zrobić outport (0x21, old21);.

gophi

Przerwanie przechwycone setvect i niby wszystko powinno dzialać, a
jednak...nie działa.


char old21 = inport(0x21);
outport (0x21, old21 & ((1 << irq_num) ^ 0xFF));

Dodać po setvect ustawiającym nowy wektor, a przed setvect przywracającym
stary outport (0x21, old21);. irq_num to numer przerwania portu (jeśli
mniejszy niż 8; jeśli większy lub równy, zmniejszyć o 8 i zmienić port
na... Nie pamiętam, wygooglać).

Jakub Klama



Ja tam piętnuję HDD Samsunga, rozsypał mi się akurat w wielką
sobotę, no i do dzisiaj (sroda) bylem uziemiony :[ ,zobaczymy jak
nowiuśki Maxtor 80G sobie poradzi z panującymi u mnie extremalnymi
warunkami :]
Matiq

Ja tam piętnuję HDD Samsunga, rozsypał mi się akurat w wielką
sobotę, no i do dzisiaj (sroda) bylem uziemiony :[ ,zobaczymy jak
nowiuśki Maxtor 80G sobie poradzi z panującymi u mnie extremalnymi
warunkami :]


Ja piętnuję kartę sieciową 3COMa 3c940 i sterowniki do Linuxa dodawane
do niej...nigdy więcej takiego badziewia nie kupię. Ja chcę Realteka :(

gophi

Ja piętnuję kartę sieciową 3COMa 3c940 i sterowniki do Linuxa dodawane
do niej...nigdy więcej takiego badziewia nie kupię. Ja chcę Realteka :(


Co z nimi nie tak?
Matiq

| Ja piętnuję kartę sieciową 3COMa 3c940 i sterowniki do Linuxa dodawane
| do niej...nigdy więcej takiego badziewia nie kupię. Ja chcę Realteka :(

Co z nimi nie tak?


Karta nie jest automatycznie wykrywana przez żadną dystrybucję Linuxa
jaką do tej pory miałem, byłby to pikuś gdyby sterowniki dodawane na
płytce do karty (ściągnięte z netu również) chciały się zainstalować -
na Mandrake wypisywał, że nie mam podstawowych bibliotek (a były), w
SuSE przy instalacji wypisywał, że nie ma polecenia insmod co lekko mnie
zdziwiło. Pogooglałem trochę i znalazłem taki sam przypadek: pomogło
uruchomienie sterownika sk98lin, niestety tylko pod Mandrake.

gophi

Karta nie jest automatycznie wykrywana przez żadną dystrybucję Linuxa
jaką do tej pory miałem,


Wkompilowałeś moduł?

na Mandrake wypisywał, że nie mam podstawowych bibliotek (a były), w
SuSE przy instalacji wypisywał, że nie ma polecenia insmod co lekko mnie
zdziwiło. Pogooglałem trochę i znalazłem taki sam przypadek: pomogło
uruchomienie sterownika sk98lin, niestety tylko pod Mandrake.


Tak to jest jak się używa takich rzeczy zamiast Debiana...

Mad Wizard

Karta nie jest automatycznie wykrywana przez żadną dystrybucję Linuxa
jaką do tej pory miałem, byłby to pikuś gdyby sterowniki dodawane na


        Hmmm... Mnie zadziałało od pierwszego pyknięcia.

Matiq

Wkompilowałeś moduł?


No starałem się ale widać luser jestem

Tak to jest jak się używa takich rzeczy zamiast Debiana...


Mądry polak po szkodzie. Teraz się nauczyłem :D

Kłopot z wystawianiem - pomocy
RE L
test sorki
  • instrukcja kancelaryjna rozporzadzenie
  • alkohol 120 version
  • kaiserreich a mp dyskusja teoretyczna
  • chirurgia dziecieca sosnowiec
  • oferty b2b
  • piosenki do sciagniecia dla zakochanych
  • dziwny;dzwiek;powyzej;2000rpm;1;8td
  • tapety 1280 samochody
  • krajowe;przejazdy
  • Zbieranina wiadomości z for dyskusyjnych : Start